Session Initiation Protocol (SIP) is an open signaling protocol for establishing many kinds of real-time communication sessions. Examples of the types of communication sessions that may be established using SIP include voice, video, and/or instant messaging. These communication sessions may be carried out on any type of communication device such as a personal computer, laptop computer, Personal Digital Assistant (PDA), or similar type of device. One key feature of SIP is its ability to use an end-user's Address of Record (AOR) as a single unifying public address for all communications. Thus, in a world of SIP-enhanced communications, a user's AOR becomes their single address that links the user to all of the communication devices associated with the user. Using this AOR, a caller can reach any one of the user's communication devices, also referred to as User Agents (UAs) without having to know each of the unique device addresses.
SIP provides a comprehensive framework for building various kinds of communication services using text-based messages defined in RFC 3261, the entire content of which is hereby incorporated herein by reference. While text-based representation of SIP messages is useful for debugging, space usage and computation-wise, text-based messaging system is expensive on network elements that communicate over SIP. Specifically, in order to decode an incoming SIP message, often SIP stacks allocate a lot of different dynamically-instantiated memory locations to represent the SIP message in a form that can be represented using the native software technologies. Most often the dynamically allocated memory space is deleted immediately or shortly after the SIP message is processed by the receiving UA. The scope of memory allocations and parsing/formatting time spent for processing txt-based SIP messages is quite large for servers that provide service to large number of network devices and applications. When a series of servers are connected, for instance, each message may be converted from an object representation to text representation (formatting), or converted from text to object representation (parsing) many times as the message moves end-to-end through many different SIP proxy servers, or SIP back-to-back User Agents. This parsing/formatting accounts for a large amount of the total processing time and restricts the maximum throughput of real-time systems.